#ifndef TestPKBNextBip_h
#define TestPKBNextBip_h
// Note 1
#include <cppunit/extensions/HelperMacros.h>
#include "PKB.h"
#include "Type.h"
class PKBNextBipTest : public CPPUNIT_NS::TestFixture // Note 2
{	
	PKB* pkb;
	vector<Type::List::Line> samples;
	vector<Type::List::Line> samplep;
	vector<Type::List::Line> samplesStar;
	vector<Type::List::Line> samplepStar;
	CPPUNIT_TEST_SUITE( PKBNextBipTest );

	CPPUNIT_TEST( testGetSuccessorNextBip );
	CPPUNIT_TEST( testGetPredecessorNextBip );
	CPPUNIT_TEST( testIsNextBip );
	CPPUNIT_TEST( testHasSuccessorNextBip );
	CPPUNIT_TEST( testHasPredecessorNextBip );
	CPPUNIT_TEST( testGetSuccessorNextBipStar );
	CPPUNIT_TEST( testGetPredecessorNextBipStar );
	CPPUNIT_TEST( testIsNextBipStar );

	CPPUNIT_TEST( testGetSuccessorNextBipMC );
	CPPUNIT_TEST( testGetPredecessorNextBipMC );
	CPPUNIT_TEST( testIsNextBipMC );
	CPPUNIT_TEST( testHasSuccessorNextBipMC );
	CPPUNIT_TEST( testHasPredecessorNextBipMC );
	CPPUNIT_TEST( testGetSuccessorNextBipStarMC );
	CPPUNIT_TEST( testIsNextBipStarMC );
	
	CPPUNIT_TEST_SUITE_END();
	private:
	void insertProc();
	void insertLineEntity();
	void setNext();
	void setCall();
	void setParent();
	void setFollow();
	void setNextBip();
	void setSampleSuccessor();
	void setSamplePredecessor();
	void setSampleSuccessorStar();
	void setSamplePredecessorStar();
	
	void insertProcMultiCall();
	void insertLineEntityMultiCall();
	void setNextMultiCall();
	void setCallMultiCall();
	void setParentMultiCall();
	void setFollowMultiCall();
	void setNextBipMultiCall();
	void setSampleSuccessorMultiCall();
	void setSamplePredecessorMultiCall();
	void setSampleSuccessorStarMultiCall();
	void setSamplePredecessorStarMultiCall();
	
	public:
	void setUp();
	void tearDown();
	
	void testGetSuccessorNextBip();
	void testGetPredecessorNextBip();
	void testIsNextBip();
	void testHasSuccessorNextBip();
	void testHasPredecessorNextBip();
	void testGetSuccessorNextBipStar();
	void testGetPredecessorNextBipStar();
	void testIsNextBipStar();

	void testGetSuccessorNextBipMC();
	void testGetPredecessorNextBipMC();
	void testIsNextBipMC();
	void testHasSuccessorNextBipMC();
	void testHasPredecessorNextBipMC();
	void testGetSuccessorNextBipStarMC();
	void testIsNextBipStarMC();

};
#endif